/**
 * This class contains unit tests for validating the behavior of Apex classes
 * and triggers.
 *
 * Unit tests are class methods that verify whether a particular piece
 * of code is working properly. Unit test methods take no arguments,
 * commit no data to the database, and are flagged with the testMethod
 * keyword in the method definition.
 *
 * All test methods in an organization are executed whenever Apex code is deployed
 * to a production organization to confirm correctness, ensure code
 * coverage, and prevent regressions. All Apex classes are
 * required to have at least 75% code coverage in order to be deployed
 * to a production organization. In addition, all triggers must have some code coverage.
 * 
 * The @isTest class annotation indicates this class only contains test
 * methods. Classes defined with the @isTest annotation do not count against
 * the organization size limit for all Apex scripts.
 *
 * See the Apex Language Reference for more information about Testing and Code Coverage.
 */
@isTest(SeeAllData=true)
private class ListOfEmployeeControllerTestClass {

    static testMethod void myUnitTest() {
        // TO DO: implement unit test
        
        //Auxiliar variables
        listOfEmployeeController controller = new listOfEmployeeController();
        PageReference currentPage;
        
        List<Account> employees = controller.employees;
        
        //Insert an Account to test edit function.
        RecordType rec = new RecordType();
        rec.Name='New Record Type';
        Account testAccount = new Account(Name='testAccount', CurrencyIsoCode ='USD', RecordTypeID = rec.Id);
        
        //Test edit functionality which consists in send the user to the Edition page
        
        //First we try to update a record without an Id and cover the exception code
        
        controller.idToUpdate = null;
        controller.editEmployee();
        
        controller.idToUpdate = testAccount.Id;
        currentPage = controller.editEmployee();
        
        //Cover the code of buttons attribute
        List<ButtonCreator> b = controller.buttons;
        
        
        currentPage = Page.Employees;
        //Run Search without parameters
        
        //controller.runSearch();
       
        //Run Search with parameters
        
        Apexpages.currentPage().getParameters().put('firstName','A name');
 	    Apexpages.currentPage().getParameters().put('lastName','A lastName');
 	    Apexpages.currentPage().getParameters().put('selZona','A zone');
 	    Apexpages.currentPage().getParameters().put('selStore','A store');
  	    Apexpages.currentPage().getParameters().put('selPos','A position');
        
       
        controller.runSearch();
        
        System.debug(controller.selectZona);
        System.debug(controller.selectStore);
        System.debug(controller.selectPos);
        
        
        
    }
}